#-*- codeing = utf-8 -*-
#@Time : 2020/9/22 22:23
#@Author : 阳某
#@File : 函数2.py
#@Software : PyCharm

def max1(x,y):
    # 比较两个数大小
    m = x if x>y else y
    return m
def max2(a,b,c,d):
    res1 = max1(a,b)
    res2 = max1(res1,c)
    res3 = max1(res2,d)
    return res3
# 函数嵌套调用
the_max = max2(1,68,4,8)
print(the_max)

# 函数名   ---   变量名本质就是内存地址
# 1.可以被引用
# 2.可以被当做容器类型的元素
# 3.可以被当做函数的参数和返回值，函数名当做普通变量来用
# def func():
#     print('in func')
# func()
# print(func)
# f = func
# print(f)
# f()
# l = [f]
# l[0]()
# print(l[0])


# 闭包函数
# 内部函数包含对外部作用域而非全局作用域名字的引用，该内部函数成为闭包函数
def func():
    name = 'mark'
    def inner():    #内部函数，闭包函数
        print(name)
    print(inner.__closure__)    #判断是否为闭包函数(<cell at 0x000002389BEAC738: str object at 0x00000238ADA92DF0>,)
    return inner    #函数作为返回值
f= func()
f()     # inner()

# a = 1
# def func():
#     name = 'mark'
#     def inner():    #内部函数,不是闭包函数
#         print(a)